package com.neusoft.crm.service;

import com.neusoft.crm.po.ClientInfo;
import com.neusoft.crm.po.ClientLinkMan;
import com.neusoft.crm.po.Orders;

import java.util.List;

/**
 * 客户信息接口
 *
 * @author lanan1207
 */
public interface IClientInfoService {
    /**
     * 显示客户信息列表
     *
     * @param clientInfo 基础客户信息，不需要携带任何信息
     * @return 客户信息列表
     */
    List<ClientInfo> showClientInfoList(ClientInfo clientInfo);

    /**
     * 编辑客户信息
     *
     * @param clientInfo 要编辑的客户信息
     * @return 受影响的行数
     */
    int updateClientInfo(ClientInfo clientInfo);

    /**
     * 根据客户编号Code查看客户详细信息
     *
     * @param clientInfo 要查看的客户信息
     * @return 查询到的客户信息
     */
    ClientInfo selectClientInfoByCode(ClientInfo clientInfo);

    /**
     * 根据客户编号查看客户订单信息
     *
     * @param clientInfo 要查看的订单信息的客户
     * @return 查询到的对应客户的订单信息
     */
    List<Orders> selectOrdersByclientCode(ClientInfo clientInfo);

    /**
     * 根据客户编号查看客户联系人信息
     *
     * @param clientLinkMan 要查看的客户联系人信息
     * @return 查询到的对应客户的联系人信息
     */
    List<ClientLinkMan> selectClientLinkManByclientCode(ClientLinkMan clientLinkMan);

    /**
     * 新建客户联系人信息
     *
     * @param clientLinkMan 要新建的客户联系人信息
     * @return 受影响的行数
     */
    int insertClientLinkMan(ClientLinkMan clientLinkMan);

    /**
     * 编辑客户联系人信息
     *
     * @param clientLinkMan 要编辑的客户联系人信息
     * @return 受影响的行数
     */
    int updateClientLinkMan(ClientLinkMan clientLinkMan);

    /**
     * 显示客户联系人详情
     *
     * @param clientInfo 要显示联系人详情的客户
     * @return 查询结果
     */
    List<ClientLinkMan> selectClientLinkMan(ClientInfo clientInfo);

    /**
     * 删除客户联系人
     *
     * @param clientLinkMan 要删除的客户联系人
     * @return 受影响的行数
     */
    int deleteClientLinkMan(ClientLinkMan clientLinkMan);

    /**
     * 新建客户
     *
     * @param clientInfo 要新建的客户信息
     * @return 受影响的行数
     */
    int insertClient(ClientInfo clientInfo);


    /**
     * 查找客户
     *
     * @param clientInfo 根据输入条件查找
     * @return 查找到的客户
     */
    List<ClientInfo> selectClientInfo(ClientInfo clientInfo);

    /**
     * 更新客户状态
     *
     * @param clientInfo 要更新的客户信息
     * @return 受影响的行数
     */
    int updateClientStatus(ClientInfo clientInfo);

}
